package com.ailsa.learningsystem.role;

import com.ailsa.learningsystem.dao.StuAuthority;
import com.ailsa.learningsystem.dao.TeaAuthority;
import com.ailsa.learningsystem.pojo.Course;

import java.util.List;

/**
 * @Author 冉冉
 * @Version 1.0
 * abstract修改的类叫做抽象类
 * 1.不能创建实例
 * 2.抽象类可以定义变量
 * 3.抽象类中还可以定义普通方法
 * 4.抽象类中可以抽象方法
 */

public abstract class Role {
    //私有属性
    private String roleName;//角色的名称
    //学生角色
    private StuAuthority stuAuthority;
    //讲师角色
    private TeaAuthority teaAuthority;

    public StuAuthority getStuAuthority() {
        return stuAuthority;
    }

    public void setStuAuthority(StuAuthority stuAuthority) {
        this.stuAuthority = stuAuthority;
    }

    public TeaAuthority getTeaAuthority() {
        return teaAuthority;
    }

    public void setTeaAuthority(TeaAuthority teaAuthority) {
        this.teaAuthority = teaAuthority;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public Role(String roleName) {
        this.roleName = roleName;
    }

    public Role() {
    }

    /**
     * 判断是否已登录，如果没有登录，请先登录
     * @return
     */
    public List<Course> query(){
        if(teaAuthority==null&&stuAuthority==null){
            System.out.println("对不起，您还没有登录，请先登录再去操作数据");
        }else if(teaAuthority!=null){
            return teaAuthority.getAllCourse();
        }else{
            return stuAuthority.getAllCourse();
        }
        return null;
    }

    /**
     * 判断是否已登录，如果没有登录，请先登录
     * @param courseType
     * @return
     * 两个方法：叫做方法重载
     */
    public List<Course> query(String courseType){
        if(teaAuthority==null&&stuAuthority==null){
            System.out.println("对不起，您还没有登录，请先登录再去操作数据");
        }else if(teaAuthority!=null){
            return teaAuthority.getCourseByType(courseType);
        }else{
            return stuAuthority.getCourseByType(courseType);
        }
        return null;
    }
    /**
     * 方法重载：方法名称相同，参数不同【参数的个数不同，参数不同的类型】，与修饰符和返回值无关
     * 方法重写：方法的名称相同，参数相同，出现在父类与子类，接口与实现类之间
     * 判断是否已登录，如果没有登录，请先登录
     */
    public Course query(int courseId){
        if(teaAuthority==null&&stuAuthority==null){
            System.out.println("对不起，您还没有登录，请先登录再去操作数据");
        }else if(teaAuthority!=null){
            return teaAuthority.getCourseById(courseId);
        }else{
            return stuAuthority.getCourseById(courseId);
        }
        return null;
    }

    /**
     *根据课程名称查询课程信息
     * @param courseName
     * @return
     */
    public List<Course> queryCorseName(String courseName){
        if(teaAuthority==null&&stuAuthority==null){
            System.out.println("对不起，您还没有登录，请先登录再去操作数据");
        }else if(teaAuthority!=null){
            return teaAuthority.getCourseByName(courseName);
        }else {
            return stuAuthority.getCourseByName(courseName);
        }
        return null;
    }

    /**
     * 发布课程
     * @param course
     */
    public void pubCourse(Course course){
        if(teaAuthority==null){
            System.out.println("对不起，您还没有登录，没有权限发布课程");
            return;
        }
        //调用发布课程的方法
        teaAuthority.saveCourse(course);
    }

    /**
     * 根据课程名称和课程类型查询课程信息
     * @param courseName  课程名称
     * @param courseType 课程类型
     * @return
     */
    public List<Course> query(String courseName,String courseType){
        if(teaAuthority==null&&stuAuthority==null){
            System.out.println("对不起，您还没有登录，没有权限发布课程");
        }else if (teaAuthority!=null){
            return teaAuthority.getCourseByNameType(courseName,courseType);
        }else{
            return stuAuthority.getCourseByNameType(courseName,courseType);
        }
        return null;
    }

    /**
     * 删除课程
     * @param courseId
     */
    public void deleteCourse(int courseId){
        if(teaAuthority==null){
            System.out.println("对不起，您还没有登录，没有权限发布课程");
        }else{
            teaAuthority.deleteCourse(courseId);
        }
    }
}
